package com.example.java_chatroom.component;

import com.example.java_chatroom.model.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 *
 *
 * @author dujlc
 * @date 2023/6/30 15:13
 * @see
 * @since 1.0
 */
@Slf4j
@Component
public class CommonSession {

    /**
     * 从 httpSession 中获取 user 对象
     * @param req       HttpServletRequest
     * @param desc      日志描述
     * @return          返回查询到的user对象
     */
    public User getUserBySession(HttpServletRequest req, String desc) {
        // 1. 获取到当前用户的 userId (从 spring 的 session 中获取)
        HttpSession session = req.getSession(false);
        // 如果 session 为null，说明未登录，返回一个空数组对象
        if (session == null) {
            log.info("[{}] session == null", desc);
            return null;
        }
        // 从 session 中获取 user 对象
        User user = (User) session.getAttribute("user");
        // 如果 user 为null，说明未登录，返回一个空数组对象
        if (user == null) {
            log.info("[{}] user == null", desc);
            return null;
        }
        return user;
    }
}
